package com.tianji.learning.service;

import com.tianji.common.domain.dto.PageDTO;
import com.tianji.common.domain.query.PageQuery;
import com.tianji.learning.domain.dto.LearningPlanDTO;
import com.tianji.learning.domain.po.LearningLesson;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianji.learning.domain.vo.LearningLessonVO;

import java.util.List;

/**
 * <p>
 * 学生课程表 服务类
 * </p>
 *
 * @author yangyu
 * @since 2023-07-21
 */
public interface ILearningLessonService extends IService<LearningLesson> {

    /**
     * 1.添加课程到课程表
     * @param userId 用户id
     * @param courseIds 课程id
     */
    void addUserLessons(Long userId, List<Long> courseIds);

    /**
     * 2.分页查询我的课表
     * @param pageQuery 分页请求参数
     * @return  分页结果
     */
    PageDTO<LearningLessonVO> queryMyLessons(PageQuery pageQuery);

    /**
     * 3.查询我最近正在学习的课程
     * @return 课程表信息
     */
//    LearningLessonVO queryMyCurrentLesson();


    /**
     * 4、查询指定课程信息
     * @param courseId  课程id
     * @return  课程表VO
     */
//    LearningLessonVO queryLessonByCourseId(Long courseId);
//
//    /**
//     * 5、删除指定课程信息（Day2 - 作业）
//     * @param userId
//     * @param courseId
//     */
//    void deleteCourseFromLesson(Long userId, Long courseId);
//
//    /**
//     * 6、统计课程学习人数（Day2 - 作业）
//     * @param courseId
//     * @return
//     */
//    Integer countLearningLessonByCourse(Long courseId);
//
//    /**
//     * 7、校验当前课程是否已经报名（Day2 - 作业）
//     * @param courseId
//     * @return
//     */
//    Long isLessonValid(Long courseId);


    /**
     * 7.校验指定课程是否是课表中的有效课程（Feign接口）
     * @param courseId  课程id
     * @return  有效则返回lessonId
     */
    Long isLessonValid(Long courseId);



    /**
     * 8、根据用户ID和课程ID查询  ==> 课表信息
     * @param userId    用户id
     * @param courseId  课程id
     * @return  课表信息
     */
    LearningLesson queryByUserAndCourseId(Long userId, Long courseId);


    /**
     * 9.创建学习计划
     * @param learningPlanDTO   课程id，计划每周学习频率
     */
    void createLearningPlan(LearningPlanDTO learningPlanDTO);



}
